#!/bin/bash

# 波导模拟全流程自动化脚本
# 包含：编译 -> 运行 -> 绘图

echo "===== 波导电磁场模拟自动化脚本 ====="

# 设置颜色
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 创建必要的目录
echo -e "${YELLOW}[1/5]${NC} 创建必要的目录..."
mkdir -p data temp waveguide_plots

# 清理旧的数据文件
echo -e "${YELLOW}[2/5]${NC} 清理旧的数据文件..."
rm -f data/*.csv
rm -f temp/temp_frame_*.png
rm -f waveguide_plots/radial_plots/*.png

# 编译C++代码
echo -e "${YELLOW}[3/5]${NC} 编译波导模拟程序..."
g++ -I/usr/include/eigen3 -O3 -o waveguide waveguide.cpp -L/usr/lib/x86_64-linux-gnu -lgsl -lgslcblas

# 检查编译是否成功
if [ $? -ne 0 ]; then
    echo -e "${RED}编译失败！请检查错误信息。${NC}"
    exit 1
fi

echo -e "${GREEN}编译成功！${NC}"

# 运行模拟
echo -e "${YELLOW}[4/5]${NC} 运行波导模拟..."
./waveguide

# 检查运行是否成功
if [ $? -ne 0 ]; then
    echo -e "${RED}模拟运行失败！请检查错误信息。${NC}"
    exit 1
fi

echo -e "${GREEN}模拟完成！${NC}"

# 检查是否有输出文件
file_count=$(ls data/field_*.csv 2>/dev/null | wc -l)
if [ "$file_count" -eq 0 ]; then
    echo -e "${RED}未找到模拟输出文件！请检查程序是否正确保存了数据。${NC}"
    exit 1
fi

echo -e "${GREEN}成功生成 $file_count 个场数据文件。${NC}"

# 运行Python绘图脚本
echo -e "${YELLOW}[5/5]${NC} 生成可视化图像..."
python3 plot_waveguide.py

# 检查绘图是否成功
if [ $? -ne 0 ]; then
    echo -e "${RED}绘图失败！请检查错误信息。${NC}"
    exit 1
fi

echo -e "${GREEN}可视化完成！${NC}"
echo -e "${GREEN}所有步骤已成功完成！${NC}"
echo ""
echo "结果文件位置:"
echo "- 场数据: data/field_*.csv"
echo "- 临时帧: temp/temp_frame_*.png"
echo "- 可视化结果: waveguide_plots/"
echo ""
echo "您可以使用以下命令查看结果:"
echo "  - 热图: display waveguide_plots/waveguide_heatmap.png"
echo "  - 3D表面图: display waveguide_plots/waveguide_3d_surface.png"
echo "  - 动画: display waveguide_plots/waveguide_animation.gif"